/************************************************************************
 * File: gamemanager.h                                                  *
 *                                                                      *
 * Copyright 2006, 2008 Colin Kern (colin.kern@gmail.com)               *
 *                                                                      *
 * This file is part of Profit.  Some previous versions were released   *
 * under the names Megacorp Mania and Acquire.                          *
 *                                                                      *
 * Profit is free software: you can redistribute it and/or modify       *
 * it under the terms of the GNU General Public License as published by *
 * the Free Software Foundation, either version 3 of the License, or    *
 * any later version.                                                   *
 *                                                                      *
 * Profit is distributed in the hope that it will be useful,            *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
 * GNU General Public License for more details.                         *
 *                                                                      *
 * You should have received a copy of the GNU General Public License    *
 * along with Profit.  If not, see <http://www.gnu.org/licenses/>.      *
 ************************************************************************/
#ifndef GAMEMANAGER_H
#define GAMEMANAGER_H

#include <QWidget>
#include <QList>

class Game;
class Player;
class QTextEdit;
class QString;
class ResultsViewer;
class QStackedLayout;
class TitleScreen;
class GameSetup;

class GameManager : public QWidget
{
	Q_OBJECT
	
	public:
		enum Sort {Money};
		
		GameManager(QWidget *parent = 0);
		
		QTextEdit *getMessageLog() const;
		bool gameRunning() const;
		QSize sizeHint() const;
		
		void sortPlayers(Sort sort);
		void newGame();
		void addPlayer(const QString &name, bool computer);
		
	private slots:
		void gameOver();
		void addMessage(const QString &message);
		void startGame();
	
	private:
		Game *m_game;
		TitleScreen *m_title;
		GameSetup *m_gameSetup;
		ResultsViewer *m_results;
		QTextEdit *m_messageLog;
		QList<Player*> m_players;
		QStackedLayout *m_stack;
		bool m_gameRunning;
		
};

#endif